home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / orf.zip / ORF.BAS next >
BASIC Source File  |  1980-01-04  |  21KB  |  606 lines

  1. '=========================================================================
  2. '                  Copyright 1987, Frederick G. Volking
  3. '                        San Francisco, California
  4. '      Author may be contacted through Chrisma BBS at (415)349-6576
  5. '    This software released as "freeware" by the Author on July 1, 1987.
  6. '=========================================================================
  7. '         This code extracted from Omni-Tool-Box: Version:  1.1
  8. '=========================================================================
  9. COPYright$="OmniReference - Copyright 1987, Frederick Volking - Ver: 1.10.A"
  10. INSTALLdefault$="GNIKLOVBASORFORBBAK 1 0 1 0    "
  11. YES%=1
  12. NO%=0
  13. PRINT
  14. PRINT COPYright$
  15. DECRoff%=7
  16. INCRoff%=5
  17. DIM VAR$(500),VARloc$(500),SRTINDX%(500),VARtype%(500),_
  18.    DECRoff$(DECRoff%),DECRoffLEN%(DECRoff%),_
  19.    INCRoff$(INCRoff%),INCRoffLEN%(INCRoff%),_
  20.    INCLDfile$(99),INCLDfileGOOD%(99)
  21. GOSUB PARSEinstallDEFAULTS
  22. GOSUB PARSEcommandLINE
  23. GOSUB SETupVARS
  24. GOSUB OPENsourceFILE
  25. PRINT SOURCEfile$;
  26. GOSUB OPENtargetFILE
  27. INCLDprocess$=""
  28. GOSUB PROCESSfile
  29. CLOSE #1
  30. GOSUB PROCESSincldFILES
  31. GOSUB SORTarray
  32. GOSUB OPENorfFILE
  33. GOSUB SHOWvars
  34. IF AUTOelim%=YES% AND DOpretty%=YES% THEN GOSUB SWITCHem
  35. PRINT
  36. PRINT "DONE!"
  37. END
  38. '=========================================================================
  39. PROCESSincldFILES:
  40.    IF INCLDfile%>0 THEN
  41.       WHILE (INCLDfile%-INCcounter%)<>0
  42.          INCR INCcounter%
  43.          OPEN "R", #1, INCLDfile$(INCcounter%),1
  44.          LOFincldFILE%=LOF(1)
  45.          CLOSE #1
  46.          IF LOFincldFILE%=0 THEN
  47.             PRINT "not found[";INCLDfile$(INCcounter%);"]";
  48.             KILL INCLDfile$(INCcounter%)
  49.             INCLDfileGOOD%(INCcounter%)=NO%
  50.             ELSE
  51.             INCLDfileGOOD%(INCcounter%)=YES%
  52.             PRINT INCLDfile$(INCcounter%);
  53.             OPEN "I", #1, INCLDfile$(INCcounter%)
  54.             INCLDprocess$=STR$(INCcounter%)
  55.             INCLDprocess$="["+RIGHT$(INCLDprocess$,LEN(INCLDprocess$)-1)+"]"
  56.             PRETTY%=0
  57.             GOSUB PROCESSfile
  58.             CLOSE #1
  59.          END IF
  60.       WEND
  61.    END IF
  62. RETURN
  63. '=========================================================================
  64. PROCESSfile:
  65.    WHILE NOT EOF(1)
  66.       LINE INPUT #1, IN$
  67.       IF INSTR(IN$,"'"+"ORF=")>0 THEN
  68.          IN$=LEFT$(IN$,INSTR(IN$,"'"+"ORF=")-1)
  69.          GOSUB REMOVEextraRIGHTchars
  70.       END IF
  71.       OOUT$=IN$
  72.       IN$=UCASE$(IN$)
  73.       INCR PRETTY%
  74.       PRINT ".";
  75.       GOSUB REMOVEquotedSTRINGS
  76.       IF INSTR(IN$,"$INCLUDE")>0 THEN GOSUB FOUNDincld
  77.       PUNC$=PUNC1$
  78.       GOSUB REMOVEpunc
  79.       GOSUB REMOVEremarks
  80.       GOSUB REMOVEextraSPACES
  81.       HOLDin$=IN$
  82.       IF INCLDprocess$="" THEN
  83.          IF DOpretty%=YES% THEN
  84.             OOUTprocessed$=HOLDin$
  85.             GOSUB PRETTYout
  86.          END IF
  87.       END IF
  88.       IN$=HOLDin$
  89.       GOSUB PROCESSremaining
  90.    WEND
  91. RETURN
  92. '=========================================================================
  93. FOUNDincld:
  94.    INC$=UCASE$(OOUT$)
  95.    C%=INSTR(INC$,"$INCLUDE")+8
  96.    LEFTC%=INSTR(C%,INC$,CHR$(34))+1
  97.    RGHTC%=INSTR(LEFTC%,INC$,CHR$(34))
  98.    INCR INCLDfile%
  99.    INCLDfileT$=MID$(INC$,LEFTC%,RGHTC%-LEFTC%)
  100.    IF INSTR(INCLDfileT$,".")=0 THEN INCLDfileT$=INCLDfileT$+".BAS"
  101.    INCLDfile$(INCLDfile%)=INCLDfileT$
  102. RETURN
  103. '=========================================================================
  104. PRETTYout:
  105.    IF OOUT$>" " THEN
  106.       WHILE LEFT$(OOUT$,1)=" " OR LEFT$(OOUT$,1)=CHR$(9)
  107.          OOUT$=RIGHT$(OOUT$,LEN(OOUT$)-1)
  108.       WEND
  109.    END IF
  110.    IF INSTR(IN$+" :",":")<INSTR(IN$," ") THEN FUNCoff%=1 ELSE FUNCoff%=0
  111.    PUNC$=":"
  112.    GOSUB REMOVEpunc
  113.    GOSUB REMOVEextraSPACES
  114.    IN$=OOUTprocessed$
  115.    IF IN$>"" THEN
  116.       GOSUB SUBchars
  117.       FOR C%=1 TO DECRoff%
  118.          IF INSTR(IN$,DECRoff$(C%))>0 THEN
  119.             DECR OFFset%
  120.             MID$(IN$,INSTR(IN$,DECRoff$(C%)),DECRoffLEN%(C%)+2)= _
  121.                CHR$(0)+SPACE$(DECRoffLEN%(C%))+CHR$(0)
  122.          END IF
  123.       NEXT
  124.       IF OFFset%<0 THEN OFFset%=0
  125.       OOUT$=SPACE$((OFFset%+TEMPoff%)*3)+OOUT$
  126.    END IF
  127.    IF RIGHT$(OOUT$,1)<>"_" THEN
  128.       TEMPoff%=0
  129.       ELSE
  130.       TEMPoff%=1
  131.    END IF
  132.    IF DOorfs%=YES% THEN
  133.       IF LEN(OOUT$)<70 THEN OOUT$=LEFT$(OOUT$+SPACE$(70),70)
  134.       OOUT$=OOUT$+"'"+"ORF="+STR$(PRETTY%)
  135.    END IF
  136.    PRINT #2, OOUT$
  137.    IF IN$>"" THEN
  138.       IF FUNCoff%=1 THEN
  139.          OFFset%=1
  140.          ELSE
  141.          FOR C%=1 TO INCRoff%
  142.             IF INSTR(IN$,INCRoff$(C%))>0 THEN
  143.                INCR OFFset%
  144.                MID$(IN$,INSTR(IN$,INCRoff$(C%)),INCRoffLEN%(C%)+2)= _
  145.                   CHR$(0)+SPACE$(INCRoffLEN%(C%))+CHR$(0)
  146.             END IF
  147.          NEXT
  148.          GOSUB REMOVEextraRIGHTchars
  149.          IF RIGHT$(IN$,4)="THEN" THEN INCR OFFset%
  150.       END IF
  151.    END IF
  152. RETURN
  153. '=========================================================================
  154. REMOVEextraRIGHTchars:
  155.    WHILE (RIGHT$(IN$,1))<"!" AND LEN(IN$)>1
  156.       IN$=LEFT$(IN$,LEN(IN$)-1)
  157.    WEND
  158. RETURN
  159. '=========================================================================
  160. SUBchars:
  161.    IN$=CHR$(0)+IN$+CHR$(0)
  162.    WHILE INSTR(IN$," ")>0
  163.       MID$(IN$,INSTR(IN$," "),1)=CHR$(0)
  164.    WEND
  165. RETURN
  166. '=========================================================================
  167. SHOWvars:
  168.    FOR C%=1 TO TOPvar%
  169.       IF LEN(VAR$(C%))>LONGESTvar% THEN LONGESTvar%=LEN(VAR$(C%))
  170.    NEXT
  171.    SHOWlen%=78-(LONGESTvar%+8)
  172.    PRINT #3, "       ";COPYright$
  173.    PRINT #3, STRING$(78,"=")
  174.    PRINT #3, "Source file> ";SOURCEfile$;TAB(50);"Size>";SOURCEfileLEN&
  175.    PRINT #3, STRING$(78,"-")
  176.    PRINT #3, TAB(2);"Type";
  177.    PRINT #3, TAB(7);"Name";
  178.    PRINT #3, TAB(LONGESTvar%+8);"References"
  179.    PRINT #3, " "
  180.    FOR C%=1 TO TOPvar%
  181.       PRINT #3, TAB(2);
  182.       SELECT CASE VARtype%(SRTINDX%(C%))
  183.       CASE =0
  184.       PRINT #3, "Var";
  185.       CASE =1
  186.       PRINT #3, "LBL";
  187.       CASE =2
  188.       PRINT #3, "Fn";
  189.       END SELECT
  190.       PRINT #3, TAB(7);LEFT$(VAR$(SRTINDX%(C%))+" "+ _
  191.          STRING$(LONGESTvar%,"."),(LONGESTvar%));
  192.       WHILE LEN(VARloc$(SRTINDX%(C%)))>SHOWlen%
  193.          CYCLE%=SHOWlen%
  194.          GOSUB REMOVEleadSPACE
  195.          WHILE MID$(VARloc$(SRTINDX%(C%)),CYCLE%,1)<>" "
  196.             DECR CYCLE%
  197.          WEND
  198.          PRINT #3, TAB(LONGESTvar%+9);LEFT$(VARloc$(SRTINDX%(C%)),CYCLE%)
  199.          VARloc$(SRTINDX%(C%))=RIGHT$(VARloc$(SRTINDX%(C%)), _
  200.             LEN(VARloc$(SRTINDX%(C%)))-CYCLE%)
  201.       WEND
  202.       GOSUB REMOVEleadSPACE
  203.       PRINT #3, TAB(LONGESTvar%+9);VARloc$(SRTINDX%(C%))
  204.    NEXT
  205.    PRINT #3, STRING$(78,"-")
  206.    PRINT #3, "$INCLUDE Files Found & Processed:";
  207.    FOR C%=1 TO INCLDfile%
  208.       IF INCLDfileGOOD%(C%)=YES% THEN
  209.          PRINT #3, TAB(37);"[";
  210.          PRINT #3, USING "##"; C%;
  211.          PRINT #3, " ] ";INCLDfile$(C%)
  212.       END IF
  213.    NEXT
  214.    PRINT #3, " "
  215.    PRINT #3, "$INCLUDE Files NOT FOUND!:";
  216.    FOR C%=1 TO INCLDfile%
  217.       IF INCLDfileGOOD%(C%)=NO% THEN
  218.          PRINT #3, TAB(37);INCLDfile$(C%)
  219.       END IF
  220.    NEXT
  221.    PRINT #3, " "
  222.    PRINT #3, STRING$(79,"-")
  223.    PRINT #3, "DONE..."
  224. RETURN
  225. '=========================================================================
  226. REMOVEleadSPACE:
  227.    WHILE LEFT$(VARloc$(SRTINDX%(C%)),1)=" "
  228.       VARloc$(SRTINDX%(C%))=RIGHT$(VARloc$(SRTINDX%(C%)), _
  229.          LEN(VARloc$(SRTINDX%(C%)))-1)
  230.    WEND
  231. RETURN
  232. '=========================================================================
  233. PROCESSremaining:
  234.    IF INSTR(IN$+" :",":")<INSTR(IN$," ") THEN GOTaFUNC%=1 ELSE GOTaFUNC%=0
  235.    PUNC$=":"
  236.    GOSUB REMOVEpunc
  237.    GOSUB REMOVEextraSPACES
  238.    WHILE IN$>" "
  239.       C%=INSTR(IN$," ")
  240.       PARSEword$=LEFT$(IN$,C%-1)
  241.       IN$=RIGHT$(IN$,LEN(IN$)-C%)
  242.       PARSEword%=ASC(LEFT$(PARSEword$,1))
  243.       IF INSTR(EXTRACT$,CHR$(0)+PARSEword$+CHR$(0))=0 _
  244.          AND PARSEword%>64 AND PARSEword%<91 THEN
  245.          PARSEword$=PARSEword$+INCLDprocess$
  246.          NEWvar%=1
  247.          FOR C%=1 TO TOPvar%
  248.             IF PARSEword$=VAR$(C%) THEN
  249.                VARloc$(C%)=VARloc$(C%)+STR$(PRETTY%)
  250.                IF GOTaFUNC%=1 THEN VARtype%(C%)=1
  251.                C%=TOPVAR%
  252.                NEWvar%=0
  253.